package bstsetcode;

/**
 * 递归求解--debug
 * @author noob
 * @version 1.0
 * @date 2021/3/15 12:54
 * 递归深度：
 * 初始调用的时候是0，然后每次调用就+1
 * 添加合适的打印输出
 */
public class Solution4debug {

    public ListNode removeElements(ListNode head, int val,int depth) {

        String depthString = generateDepthString(depth);
        System.out.print(depthString);
        System.out.println("Call: remove "+ val + " in " +head);


        if(head == null){
            System.out.print(depthString);
            System.out.println("Return: " +head);
            return head;
        }


        ListNode res = removeElements(head.next,val,depth+1);
        System.out.print(depthString);
        System.out.println("After remove "+ val + ": " + res);

        ListNode ret;
        if(head.val == val){
            ret = res;
        }else{
             head.next=res;
             ret = head;
        }
        System.out.print(depthString);
        System.out.println("Return: "+ ret);

        return ret;
    }

    /**
     * 根据==的长度来表示递归深度
     * @param depth  深度
     * @return
     */
    private String generateDepthString(int depth) {
        StringBuilder res = new StringBuilder();
        for (int i = 0; i < depth; i++) {
            res.append("--");
        }
        return res.toString();
    }


    public static void main(String[] args) {
        int[] nums = {1,2,6,3,4,5,6};
        ListNode head = new ListNode(nums);
        System.out.println(head);

        ListNode res = (new Solution4debug()).removeElements(head,6,0);
        System.out.println(res);
    }
}
